package com.inspur.ydt.util;

import com.inspur.icity.ProvidentDES;

/** 
* @author 作者 Michael E-mail: zhangysh@inspur.com
* @version 创建时间：2018年8月10日 上午10:47:36 
* 类说明 :
*/
/**
* @ClassName: DesUtils
* @Description: TODO(这里用一句话描述这个类的作用)
* @author zhangysh
* @date 2018年8月10日
*/
public class DesUtils extends ProvidentDES{

	/**
	* @Title: main
	* @Description: TODO(这里用一句话描述这个方法的作用)
	* @param @param args    参数
	* @return void    返回类型
	* @throws
	*/
	public static void main(String[] args) {
		String str = "    abc123   ";
		System.out.println("加密前：" + str);
		str = desEncrypt(str);
		System.out.println("加密后：" + str);
		str = desDecrypt(str);
		System.out.println("解密后：" + str);

	}
	/**
	 * 
	* @Title: desEncrypt
	* @Description: 字符串加密
	* @param @param src
	* @param @return    参数
	* @return String    返回类型
	* @throws
	 */
	public static  String desEncrypt(String src) {
		return encrypt(src);
	}
	/**
	 * 
	* @Title: desDecrypt
	* @Description: 字符串解密
	* @param @param src
	* @param @return    参数
	* @return String    返回类型
	* @throws
	 */
	public static  String desDecrypt(String src) {
		return  decrypt(decode(src));
	}
	
	public static  String desDecrypt00(byte[] bytes) {
		return  decrypt(bytes);
	}
	public static byte[] decode(String src) {
		int m = 0, n = 0;
		int byteLen = src.length() / 2; // 每两个字符描述一个字节
		byte[] ret = new byte[byteLen];
		for (int i = 0; i < byteLen; i++) {
			m = i * 2 + 1;
			n = m + 1;
			int intVal = Integer.decode("0x" + src.substring(i * 2, m) + src.substring(m, n));
			ret[i] = Byte.valueOf((byte) intVal);
		}
		return ret;
	}
	
	/**
	 * 将16进制转换为二进制
	 *
	 * @param hexStr
	 * @return
	 */
	public static byte[] parseHexStr2Byte(String hexStr) {
		if (hexStr.length() < 1)
			return null;
		byte[] result = new byte[hexStr.length() / 2];
		for (int i = 0; i < hexStr.length() / 2; i++) {
			int high = Integer.parseInt(hexStr.substring(i * 2, i * 2 + 1), 16);
			int low = Integer.parseInt(hexStr.substring(i * 2 + 1, i * 2 + 2), 16);
			result[i] = (byte) (high * 16 + low);
		}
		return result;
	}
}
 